"use client"; import { useEffect, useState } from "react"; import Button from "@/components/Componentes/button"; import { useFlutterBridge } from "@/hooks/useFlutterBridge"; export default function TestWebViewPage() { const { sendToFlutter, logs, lastEvent, events, isReady } = useFlutterBridge({ enableLogging: true, }); const [config, setConfig] = useState(null); useEffect(() => { // شناسایی INITIAL_CONFIG const initialConfig = events.find((e) => e.type === "INITIAL_CONFIG"); if (initialConfig) { setConfig(initialConfig.payload); } }, [events]); // تابع تست برای شبیه‌سازی ایونت‌های Flutter const simulateFlutterEvent = (type: string, payload: any) => { window.dispatchEvent( new CustomEvent("flutterEvent", { detail: { type, payload, timestamp: Date.now() }, }), ); }; return (
{/* Header */}

🧪 Flutter WebView Bridge Test

{isReady ? "✅ Bridge Ready" : "⏳ Waiting for Flutter..."}
{/* کارت 1: ارسال ایونت‌ها */}

📤 ارسال به Flutter

{/* کارت 2: شبیه‌سازی ایونت‌های Flutter */}

📥 شبیه‌سازی Flutter

برای تست بدون Flutter از این دکمه‌ها استفاده کنید

{/* کارت 3: آخرین ایونت */} {lastEvent && (

📥 آخرین ایونت دریافتی

Type: {lastEvent.type}
                      {JSON.stringify(lastEvent.payload, null, 2)}
                    
{new Date(lastEvent.timestamp || Date.now()).toLocaleString( "fa-IR", )}
)} {/* کارت 4: Config دریافتی */} {config && (

⚙️ Initial Config

                  {JSON.stringify(config, null, 2)}
                
)}
{/* لاگ‌ها */}

📋 لاگ‌ها ({logs.length})

{logs.length === 0 ? (

هنوز لاگی ثبت نشده است

) : (
{logs.map((log, index) => (
{log}
))}
)}
{/* راهنما */}

💡 راهنما

🎯 نحوه تست:

  1. اگر در Flutter هستید، صفحه را load کنید
  2. Flutter باید INITIAL_CONFIG بفرستد (اگر نفرستاد، از دکمه شبیه‌سازی استفاده کنید)
  3. دکمه WEB_READY را بزنید تا به Flutter اطلاع دهید
  4. سایر دکمه‌ها را تست کنید
  5. لاگ‌ها را در Console و در این صفحه مشاهده کنید

🔧 بدون Flutter:

از دکمه‌های "شبیه‌سازی Flutter" استفاده کنید تا ببینید WebView چگونه react می‌کند

{/* تمام ایونت‌ها */} {events.length > 0 && (

📜 تاریخچه ایونت‌ها ({events.length})

{events.map((event, index) => (
{event.type} {new Date( event.timestamp || Date.now(), ).toLocaleTimeString("fa-IR")}
                    {JSON.stringify(event.payload, null, 2)}
                  
))}
)}
); }